package com.atguigu.spzx.model.vo.common;

import lombok.Data;

/**
 * 统一响应结果对象
 *
 * @author zx
 * @date 2024年12月31日 14:44
 */
@Data
public class Result<T> {

    /**
     * 返回码
     */
    private Integer code;

    /**
     * 返回消息
     */
    private String message;

    /**
     * 返回数据
     */
    private T data;

    /**
     * 私有化构造
     */
    private Result() {
    }

    /**
     * 返回数据
     *
     * @param body    响应数据
     * @param code    响应码
     * @param message 响应消息
     * @param <T>     请求数据 类型
     * @return 返回统一对象实体
     */
    public static <T> Result<T> build(T body, Integer code, String message) {
        Result<T> result = new Result<>();
        result.setData(body);
        result.setCode(code);
        result.setMessage(message);
        return result;
    }

    /**
     * 通过枚举构造Result对象
     *
     * @param body           响应数据
     * @param resultCodeEnum 响应码枚举
     * @param <T>            响应数据 类型
     * @return 返回统一对象实体
     */
    public static <T> Result build(T body, ResultCodeEnum resultCodeEnum) {
        return build(body, resultCodeEnum.getCode(), resultCodeEnum.getMessage());
    }


}
